package amministrazioneCliente;

import java.util.List;

import javax.annotation.Resource;
import javax.ejb.EJBContext;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;

import travelDreamEntities.Amicononregistrato;
import travelDreamEntities.Cliente;
import dataTransferOblect.AmicononregistratoDTO;
import dataTransferOblect.ClienteDTO;
import gestione.mgrCliente.AmicoMgr;
import gestione.mgrCliente.ClienteMgr;

@Stateless
public class AmicoMgrBean implements AmicoMgr {
	
	@PersistenceContext
    private EntityManager em;
	
	@Resource
	private EJBContext context;
	
	@Override
	public void aggiungiAmicoNonRegistrato(AmicononregistratoDTO amicononregistratoDTO) {
		
		Amicononregistrato amicononregistrato = new Amicononregistrato(amicononregistratoDTO);
		em.persist(amicononregistrato);
		
		List<Cliente> clienti = em.createNamedQuery(Cliente.FIND_ALL,Cliente.class).getResultList();
    	String username = context.getCallerPrincipal().getName();
    	int id=0;
    	for (int i = 0; i < clienti.size(); i++) {
			if (clienti.get(i).getUserName().equals(username)){
				id=clienti.get(i).getIdCliente();
			}
		}
		Cliente cliente=em.find(Cliente.class,id);
		cliente.getAmicononregistratos().add(amicononregistrato);
		}
	
	@Override
	public void aggiungiAmicoRegistrato(AmicononregistratoDTO amicononregistratoDTO) {
		
		List<Cliente> clienti = em.createNamedQuery(Cliente.FIND_ALL,Cliente.class).getResultList();
    	String username = context.getCallerPrincipal().getName();
    	int id1=0;
    	int id2=0;
    	for (int i = 0; i < clienti.size(); i++) {
			if (clienti.get(i).getUserName().equals(username)){
				id1=clienti.get(i).getIdCliente();
			}
			if (clienti.get(i).getEmail().equals(amicononregistratoDTO.getEmail())){
				id2=clienti.get(i).getIdCliente();
			}
		}
		
		Cliente cliente1= em.find(Cliente.class,id1);
		Cliente cliente2= em.find(Cliente.class,id2);
		cliente1.getClientes1().add(cliente2);
		cliente2.getClientes2().add(cliente1);
	}

	@Override
	public AmicononregistratoDTO getAmicononregistratoDTO() {
		return null;
	}
	


	
	public AmicononregistratoDTO convertToDTO(Amicononregistrato amicononregistrato){
		AmicononregistratoDTO amicononregistratoDTO = new AmicononregistratoDTO();
		amicononregistratoDTO.setEmail(amicononregistrato.getEmail());
		amicononregistratoDTO.setNome(amicononregistrato.getNome());
		return amicononregistratoDTO;
	}

}
